﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Model;
using DAO;

namespace RegraNegocio
{
    public class FabricanteBO
    {
        private static FabricanteBO fabricanteBO = null;
        private bool DAO;

        public static FabricanteBO getInstance()
        {
            if (fabricanteBO == null)
            {
                fabricanteBO = new FabricanteBO();
            }
            return fabricanteBO;
        }


        public Fabricante consulta(Fabricante fabricante)
        {

            fabricante = FabricanteDAO.getInstance().consultar(fabricante);
            return fabricante;

        }

        public bool alterar(Fabricante fabricante)
        {
            if (validador(fabricante))
            {
                DAO = FabricanteDAO.getInstance().alterar(fabricante);
                return DAO;
            }
            else
            {
                return false;
            }


        }

        public bool gravar(Fabricante fabricante)
        {
            if (validador(fabricante))
            {
                DAO = FabricanteDAO.getInstance().inserir(fabricante);
                return DAO;
            }
            else
            {
                return false;
            }


        }

        public bool excluir(Fabricante fabricante)
        {
            if (!ProdutoDAO.getInstance().hasProdutoCadastrado(fabricante))
            {
                DAO = FabricanteDAO.getInstance().cancelar(fabricante);
                return DAO;

            }
            else
            {
                MessageBox.Show("Registro vínculado ao um Produto");
                return false;
            }
        }

        bool validador(Fabricante fabricante)
        {
            int number;

            if (Int32.TryParse(fabricante.Uf, out number))
            {
                MessageBox.Show("A UF não pode ser números!");
                return false;

            }

            else if (!Int32.TryParse(fabricante.Cnpj, out number))
            {
                MessageBox.Show("O CNPJ não pode conter letras!");
                return false;

            }

            else if (!Int32.TryParse(fabricante.Tel1, out number) ||
                  !Int32.TryParse(fabricante.Tel2, out number))
            {
                MessageBox.Show("Os TELEFONES não podem conter letras!");
                return false;
            }
            else
            {
                return true;
            }
        }

        public List<Fabricante> recuperarTodosFabricantes()
        {
            return FabricanteDAO.getInstance().recuperarTodosFabricantes();
        }

        public List<Fabricante> recuperarFabricantes(Fabricante fabricante)
        {
            List<Fabricante> fabricantesRecuperados = null;

            fabricantesRecuperados = FabricanteDAO.getInstance().recuperarFabricantes(fabricante);

            return fabricantesRecuperados;
        }
    }
}
